package com.nowcoder.community.service;

import com.nowcoder.community.entity.LoginTicket;
import com.nowcoder.community.entity.User;
import org.springframework.security.core.GrantedAuthority;

import java.util.Collection;
import java.util.Map;

/**
 * @author 花木凋零成兰
 * @date 2024/3/4 21:26
 */
public interface UserService {

    /**
     * 根据用户id 查询用户
     *
     * @param id
     * @return
     */
    User findUserById(int id);

    /**
     * 用户注册
     *
     * @param user
     * @return
     */
    Map<String, Object> register(User user);

    /**
     * 激活用户
     *
     * @param userId
     * @param code
     * @return
     */
    int activation(int userId, String code);

    /**
     * 用户登录
     *
     * @param username
     * @param password
     * @param expireSeconds
     * @return
     */
    Map<String, Object> login(String username, String password, int expireSeconds);

    /**
     * 用户退出登录
     *
     * @param ticket
     */
    void logout(String ticket);

    /**
     * 根据登录凭证查询 loginTicket
     *
     * @param ticket
     * @return
     */
    LoginTicket findLoginTicket(String ticket);

    /**
     * 更新用户头像
     *
     * @param userId
     * @param headerUrl
     * @return
     */
    int updateHeader(int userId, String headerUrl);

    /**
     * 根据id修改用户密码
     *
     * @param userId
     * @param password
     * @return
     */
    int updatePassword(int userId, String password, String salt);

    /**
     * 根据用户名查询用户
     *
     * @param username
     * @return
     */
    User findUserByName(String username);

    /**
     * 获得用户权限
     *
     * @param userId
     * @return
     */
    Collection<? extends GrantedAuthority> getAuthorities(int userId);

}